import { axiosInstance } from 'src/boot/axios'
import CommonConfig from 'src/assets/js/config'
import _ from 'lodash'
const baseUrl = CommonConfig.schemaUrl + '/v1'
const upmsUrl = CommonConfig.upmsUrl + '/v1'

// 班制
/**
 * 获取班制列表
 * id 分厂id
 * **/
export function getShifts (params) {
  const newUrl = baseUrl + '/shifts_by_plant'

  return axiosInstance.get(newUrl, { params }).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 获取班制列表
 * id 车间id
 * **/
export function getShiftByWorkshop (params) {
  const newUrl = `${baseUrl}/shifts_by_workshop`

  return axiosInstance.get(newUrl, { params }).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 添加班制
 * modeCode 班制模式
 * comments 备注
 * workshopId 车间id
 * shifts 班制列表
 * name 班制名称
 * startTime 开始时间
 * endTime 结束时间
 * isEndTimeCross 结束时间是否跨天
 * isStartTimeCross 开始时间是否跨天
 * **/
export function addShifts (data) {
  const newUrl = baseUrl + '/shifts'

  return axiosInstance.post(newUrl, data).then((res) => {
    return Promise.resolve((res))
  })
}

/**
 * 编辑班制
 * id 班制id
 * name 班制名称
 * workshopId 车间id
 * startDate 开始日期
 * startTime 开始时间
 * endDate 结束日期
 * endTime 结束时间
 **/
export function editShifts (data, id) {
  const newUrl = baseUrl + `/shifts_mode/${id}/shifts`

  return axiosInstance.put(newUrl, data).then((res) => {
    return Promise.resolve((res))
  })
}

/**
 * 删除班制
 * id 班制id
 **/
export function delShifts (shiftModeId) {
  const newUrl = baseUrl + '/shifts'
  const params = {
    shiftModeId
  }

  return axiosInstance.delete(newUrl, { params: params }).then((res) => {
    return Promise.resolve((res))
  })
}

// 班制时间
/**
 * 获取班制时间列表
 * shiftid 班制id
 * **/
export function getShiftItems (id) {
  const newUrl = baseUrl + `/shifts/${id}/shifts_items`

  return axiosInstance.get(newUrl).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 添加班制时间
 * shiftsId 班制id
 * startTime 开始时间
 * endTime 结束时间
 * workFlag 是否工作（1-是，0-否）
 * description 说明
 * **/
export function addShiftItem (data, id, shiftsModeId) {
  const newUrl = baseUrl + `/shifts_mode/${shiftsModeId}/shifts/${id}/shifts_items:rest`

  return axiosInstance.post(newUrl, data).then((res) => {
    return Promise.resolve((res))
  })
}

/**
 * 编辑班制时间
 * id 班制时间id
 * shiftsId 班制id
 * startTime 开始时间
 * endTime 结束时间
 * workFlag 是否工作（1-是，0-否）
 * description 说明
 **/
export function editShiftItem (data, shiftsItemId, shiftsModeId) {
  const newUrl = baseUrl + `/shifts_mode/${shiftsModeId}/shifts/shifts_items/${shiftsItemId}`

  return axiosInstance.put(newUrl, data).then((res) => {
    return Promise.resolve((res))
  })
}

/**
 * 删除班制时间
 * id 班制时间id
 **/
export function delShiftItem (id, shiftsModeId) {
  const newUrl = baseUrl + `/shifts_mode/${shiftsModeId}/shifts/shifts_items/${id}`
  const params = {
    id
  }

  return axiosInstance.delete(newUrl, { params: params }).then((res) => {
    return Promise.resolve((res))
  })
}

// 排版管理
/**
 * 获取排班列表
 * workShopId 车间id
 * month 年月
 * **/
export function getTeam (params) {
  if (_.isNil(params.workshopId)) {
    return
  }
  const newUrl = baseUrl + '/teamscheduling_by_workshopandmonth'

  return axiosInstance.get(newUrl, { params }).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 获取公休日类型
 * **/
export function getDateType (params) {
  const newUrl = baseUrl + '/datetype'

  return axiosInstance.get(newUrl).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 获取班组
 * **/
export function getTeams (params) {
  const newUrl = upmsUrl + '/teams'

  return axiosInstance.get(newUrl).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 删除班组
 * **/
export function delTeams (params) {
  const newUrl = baseUrl + '/teamscheduling'

  return axiosInstance.delete(newUrl, { params: params }).then((res) => {
    return Promise.resolve((res))
  })
}

/**
 * 编辑排班
 * id id
 * shiftsId 班制id
 * teamId 班组id
 * workDate 排班日期
 * workStatus 公休日标志（字典查询）
 * workworkshopId 排班车间id
 * **/
export function editTeamscheduling (data) {
  const newUrl = baseUrl + '/teamscheduling'

  return axiosInstance.put(newUrl, data).then((res) => {
    return Promise.resolve((res))
  })
}

/**
 * 切换班制状态
 * @param id 班制 ID
 * @param enable 状态 code
 * @return {Promise<unknown>} promise
 */
export function changeEnable (id, enable) {
  const newUrl = `${baseUrl}/shifts_mode_enable`

  let reqData = {
    params: {
      shiftsModeId: id
    }
  }

  return axiosInstance.get(newUrl, reqData).then(resp => {
    return Promise.resolve(resp)
  })
}

/**
 * 获取班制模式
 */
export function getShiftsMode () {
  const newUrl = `${baseUrl}/shiftsmode`

  return axiosInstance.get(newUrl).then(resp => {
    return Promise.resolve(resp)
  })
}
